package com.elong.businesstravel.base.baseactivity;

import java.io.File;

import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebSettings.LayoutAlgorithm;

/**
 * webview的基类
 * 
 * @author lenovo
 * 
 */
public class BaseWebViewActivity extends BaseActivity {

	private static final String APP_CACAHE_DIRNAME = "/webcache";

	protected WebView mWebView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}

	/**
	 * 初始化webview
	 * 
	 * @param webView
	 */
	protected void initWebView(WebView webView) {
		mWebView.getSettings().setJavaScriptEnabled(true);
		// 设置可以支持缩放
		mWebView.getSettings().setSupportZoom(false);
		// 设置出现缩放工具
		mWebView.getSettings().setBuiltInZoomControls(false);
		// 扩大比例的缩放
		mWebView.getSettings().setUseWideViewPort(true);
		mWebView.getSettings().setDefaultTextEncodingName("UTF-8");
//		// 自适应屏幕
		mWebView.getSettings().setLoadWithOverviewMode(true);
//
		// 不保存密码
		mWebView.getSettings().setSavePassword(false);
		mWebView.getSettings().setAppCacheEnabled(false);
	}

	/**
	 * 清除WebView缓存
	 */
	protected void clearWebViewCache() {

		// 清理Webview缓存数据库
		try {
			deleteDatabase("webview.db");
			deleteDatabase("webviewCache.db");
		} catch (Exception e) {
			e.printStackTrace();
		}

		// WebView 缓存文件
		File appCacheDir = new File(getFilesDir().getAbsolutePath()
				+ APP_CACAHE_DIRNAME);

		File webviewCacheDir = new File(getCacheDir().getAbsolutePath()
				+ "/webviewCache");

		// 删除webview 缓存目录
		if (webviewCacheDir.exists()) {
			deleteFile(webviewCacheDir);
		}
		// 删除webview 缓存 缓存目录
		if (appCacheDir.exists()) {
			deleteFile(appCacheDir);
		}
	}

	/**
	 * 递归删除 文件/文件夹
	 * 
	 * @param file
	 */
	public void deleteFile(File file) {

		if (file.exists()) {
			if (file.isFile()) {
				file.delete();
			} else if (file.isDirectory()) {
				File files[] = file.listFiles();
				for (int i = 0; i < files.length; i++) {
					deleteFile(files[i]);
				}
			}
			file.delete();
		} else {
		}
	}

	protected void cancel() {
		if (mWebView.canGoBack()) {
			// 返回键退回
			mWebView.goBack();
		} else {
			finish();
		}
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			cancel();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
}
